package com.anolesoft.amljmes.system.param.service.impl;

import cn.hutool.core.bean.BeanUtil;
import com.anolesoft.amljmes.system.param.dto.MesParamConfigDTO;
import com.anolesoft.amljmes.system.param.entity.MesParamConfigDO;
import com.anolesoft.amljmes.system.param.mapper.MesParamConfigMapper;
import com.anolesoft.amljmes.system.param.service.MesParamConfigService;
import com.anolesoft.system.fac.entity.Employee;
import com.anolesoft.yr.util.CommonUtils;
import com.anolesoft.yr.util.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

/**
 * @author zhj
 * @date 2022/1/7 14:52
 */
@Service
@Slf4j
public class MesParamConfigServiceImpl implements MesParamConfigService {
    @Autowired
    private MesParamConfigMapper mesParamConfigMapper;
    @Override
    public MesParamConfigDTO queryParamConfigByParamNameAndFactory(MesParamConfigDTO dto) {
        MesParamConfigDO mesParamConfigDO = BeanUtil.copyProperties(dto, MesParamConfigDO.class);
        log.info("MesParamConfigServiceImpl->queryParamConfigByParamNameAndFactory:{}", dto);
        MesParamConfigDO mesParamConfigDO1 = this.mesParamConfigMapper.selectOneByFactoryIdAndParamType(SecurityUtils.getLoginUser().getFacCode(), mesParamConfigDO.getParamName());
        if(mesParamConfigDO1 == null){
            return MesParamConfigDTO.builder()
                    .factoryId(SecurityUtils.getLoginUser().getFacCode())
                    .modifyUser(SecurityUtils.getLoginUser().getEmpUid())
//                    .objuid(CommonUtils.fastUUID())
                    .paramName("autoRevertTime")
//                    .paramValue("30")
                    .build();
        }
        MesParamConfigDTO mesParamConfigDTO = BeanUtil.copyProperties(mesParamConfigDO1, MesParamConfigDTO.class);
        Employee modifyEmployee = mesParamConfigDO1.getModifyEmployee();
        if(!ObjectUtils.isEmpty(modifyEmployee)){
            mesParamConfigDTO.setModifyUserName(modifyEmployee.getEmpName());
        }
        return mesParamConfigDTO;
    }

    @Transactional
    @Override
    public MesParamConfigDTO save(MesParamConfigDTO dto) {
        //判断objuid是否存在
        if(ObjectUtils.isEmpty(dto.getObjuid())){
            //新增
            dto.setObjuid(CommonUtils.fastUUID());
            MesParamConfigDO mesParamConfigDO = BeanUtil.copyProperties(dto, MesParamConfigDO.class);
            log.debug("新增{}",dto);
            this.mesParamConfigMapper.insert(mesParamConfigDO);
        }else{
//            修改
            MesParamConfigDO mesParamConfigDO = BeanUtil.copyProperties(dto, MesParamConfigDO.class);
            log.debug("修改{}",dto);
            this.mesParamConfigMapper.update(mesParamConfigDO);
        }
        return dto;
    }
}
